package cn.tpshion.vm.handler.task.support;

import cn.tpshion.vm.common.constant.NodeType;
import cn.tpshion.vm.domain.support.NodeContext;

/**
 * 节点处理器
 */
public interface NodeHandler<T> {

    NodeType getNodeType();

    default String getType(){
        return getNodeType().getType();
    }

    default boolean support(String type){
        return getType().equals(type);
    }

    T getData(NodeContext context);

    void handle(NodeContext context) throws Exception;

    default void stop(NodeContext context) throws Exception {
        context.setStopFlag(true);
    }
}
